package servidor.controle;

import servidor.modelo.Conta;
import servidor.modelo.TipoEstilo;

public class Dinheiro {
	public static void add(Conta conta, int reais, int centavos) {
		int dinheiroAumentar = reais * 100 + centavos;
		int dinheiroConta = conta.getReais() * 100 + conta.getCentavos();
		dinheiroConta += dinheiroAumentar;
		int novoReais = dinheiroConta / 100;
		int novoCentavos = dinheiroConta % 100;
		conta.setCentavos(novoCentavos);
		conta.setReais(novoReais);
	}

	public static void sub(Conta conta, int reais, int centavos) {
		int dinheiroDiminuir = reais * 100 + centavos;
		int dinheiroConta = conta.getReais() * 100 + conta.getCentavos();
		dinheiroConta -= dinheiroDiminuir;
		int novoReais = dinheiroConta / 100;
		int novoCentavos = dinheiroConta % 100;
		conta.setCentavos(novoCentavos);
		conta.setReais(novoReais);
	}

	public static int getCentavos(int reais, int centavos) {
		return reais * 100 + centavos;
	}

	public static boolean saldoInsuficiente(Conta conta, int reais,
			int centavos, int valorMinimo) {
		int centavosAtuais = getCentavos(conta.getReais(), conta.getCentavos());
		int centavosExtras = getCentavos(reais, centavos);
		Sistema sistema = Sistema.getUnicaInstancia();
		int valorMaximoNegativo = (conta.getEstiloDeConta() == TipoEstilo.SIMPLES) ? sistema
				.getMaximoNegativoSimples()
				: sistema.getMaximoNegativoEspecial();
		if (centavosAtuais - centavosExtras >= valorMaximoNegativo) {
			return false;
		}
		return true;
	}

}
